package com.base.utils.io;

import org.springframework.util.FileCopyUtils;

import java.io.*;
import java.net.URLEncoder;

import javax.servlet.http.HttpServletResponse;

/**
 * 说明：下载文件
 */
public class FileDownload {

	/**
	 * @param response 
	 * @param filePath		//文件完整路径(包括文件名和扩展名)
	 * @param fileName		//下载后看到的文件名
	 * @return  文件名
	 */
	public static void fileDownload(final HttpServletResponse response, String filePath, String fileName) throws Exception{  
		byte[] data = fileToBinArray(filePath);
	    fileName = URLEncoder.encode(fileName, "UTF-8");  
	    response.reset();  
	    response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");  
	    response.addHeader("Content-Length", "" + data.length);  
	    response.setContentType("application/octet-stream;charset=UTF-8");  
	    OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());  
	    outputStream.write(data);  
	    outputStream.flush();  
	    outputStream.close();
	    response.flushBuffer();
	}
	public static byte[] fileToBinArray(String fileName){
		try {
			File file=new File(fileName);
			InputStream fis = new FileInputStream(file);
			byte[] bytes = FileCopyUtils.copyToByteArray(fis);
			return bytes;
		}catch (Exception ex){
			throw new RuntimeException("transform file into bin Array 出错",ex);
		}
	}
}